package icu.zlz.emqx.service;

import java.util.List;
import java.util.Map;

import icu.zlz.emqx.domain.IotGroup;
import icu.zlz.emqx.domain.IotGroupUser;

/**
 * 设备组Service接口
 * 
 * @author zangs
 * @since 2024-12-27
 */
public interface IIotGroupService 
{
    /**
     * 查询设备组
     * 
     * @param groupId 设备组主键
     * @return 设备组
     */
    public IotGroup selectIotGroupByGroupId(Long groupId);

    /**
     * 查询设备组列表
     * 
     * @param iotGroup 设备组
     * @return 设备组集合
     */
    public List<IotGroup> selectIotGroupList(IotGroup iotGroup);

    /**
     * 新增设备组
     * 
     * @param iotGroup 设备组
     * @return 结果
     */
    public int insertIotGroup(IotGroup iotGroup) ;

    /**
     * 修改设备组
     * 
     * @param iotGroup 设备组
     * @return 结果
     */
    public int updateIotGroup(IotGroup iotGroup);

    /**
     * 批量删除设备组
     * 
     * @param groupIds 需要删除的设备组主键集合
     * @return 结果
     */
    public int deleteIotGroupByGroupIds(Long[] groupIds);

    /**
     * 删除设备组信息
     * 
     * @param groupId 设备组主键
     * @return 结果
     */
    public int deleteIotGroupByGroupId(Long groupId);

    List<Map<String, Object>>  selectAllocatedList(IotGroupUser user);

    List<Map<String, Object>> selectUnallocatedList(IotGroupUser user);

    int insertGroupUsers(Long groupId, Long[] userIds,String[] permissions);

    int deleteAuthUser(IotGroupUser iotGroupUser);

    int deleteAuthUsers(Long groupId, Long[] userIds);

    IotGroupUser getMyPermissions(Long groupId);

    public IotGroup getIotGroupByGroupId(Long groupId);
}
